#include "common.h"
#include "devil1tex.h"

void extracttextures(const char *filedata,
                    unsigned int filesize,
                    const char *filename) {
    struct TexturePack *p = NULL;
    struct Texture *t     = NULL;
    struct TextureBatchDescriptor *d = NULL;
    char * fmt            = NULL;
    if (!(DEVIL1TEX.getheader(&p, filedata)) || filesize == 0) {
        return;
    }
    fmt = (char*)malloc(strlen(filename) + 3 + 4);
    unsigned int i;
    unsigned int j;
    unsigned int id = 0;
    for (i = 0; i < p -> batchNumber; i++) {
        DEVIL1TEX.getbatchdesc(&d, i, filedata, filesize);
        t = (struct Texture*)
                malloc(sizeof(struct Texture) * (d -> texNumber));
        DEVIL1TEX.gettextures(t, i, filedata, filesize);
        for (j = 0; j < d -> texNumber; j++) {
            sprintf(fmt, "%s_%d.dds", filename, id);
            write(fmt, (char*)t[j].data, d -> textureSize);
            id++;
        }
        free(t);
    }
    free(fmt);
    return;
}

int main(int argc, char ** argv) {
    char *f = argv[1];
    unsigned int bufsize = 0;
    char *buffer         = loadfile(f, &bufsize);
    extracttextures(buffer, bufsize, f);
    free(buffer);
    return 0;
}


